#ifndef ICAMERA_H
#define ICAMERA_H

#include <GL/glew.h>
#include <GL/glfw.h>
#include <string>
#include <map>

#include "Vector3.h"

namespace glow
{
	template< map<string s, unsigned int i> >
	class ICamera
	{
		
	protected :   
	
		Vector3d _position;
		Vector3d _angle;
		Vector3d _target;
       
	public :
    
		ICamera();
		ICamera(Vector3d pos, Vector3d ang, Vector3d targ);
		virtual ~ICamera();
			
		Vector3d getPosition();
		Vector3d getAngle();
		Vector3d getTarget();
			
		void setPosition(Vector3d pos);
		void setAngle(Vector3d ang);
		void setTarget(Vector3d targ);

		void reset();
		void translate(Vector3d v);
		void lookAt(Vector3d pos, Vector3d ang, Vector3d targ);
		void render();

		virtual void getEvent()=0;		
			
  };
  
  #include "ICamera.inl"
}


#endif
